﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using clEntidad;
using System.Data.OleDb;
using clBD;
using System.Collections;

namespace clBUS
{
    public class BUSRegistroVehiculo:BUSBase
    {
        public BUSRegistroVehiculo(String cadBD) : base(cadBD) { }
        public int  grabar(RegistroVehiculo elemento, Usuario usuario)
        {
            int rpta=0;
            using (OleDbConnection cn = getCn())
            {
                BDPersona bdPersona = new BDPersona(cn);
                bdPersona.grabar(elemento.persona, 0);
                if (elemento.persona.numMovil.Trim() != "")
                {
                    bdPersona.grabaMovil(elemento.persona.numDoc, elemento.persona.numMovil);
                }
                if (!elemento.vehiculo.equipoIn1.numSerie.Equals(""))
                {
                    if (!elemento.vehiculo.equipoIn1.numSerie.Equals("NOREG"))
                    {
                        BDEquipo bdEquipo = new BDEquipo(cn);
                        bdEquipo.grabar(elemento.vehiculo.equipoIn1, 0, "I");
                        bdEquipo.grabarElemento("marca", elemento.vehiculo.equipoIn1.marca);
                        //bdEquipo.grabarElemento("modelo", elemento.vehiculo.equipo1.modelo);
                    }
                }
                if (!elemento.vehiculo.equipoIn2.numSerie.Equals(""))
                {
                    if (!elemento.vehiculo.equipoIn2.numSerie.Equals("NOREG"))
                    {
                        BDEquipo bdEquipo = new BDEquipo(cn);
                        bdEquipo.grabar(elemento.vehiculo.equipoIn2, 0, "I");
                        bdEquipo.grabarElemento("marca", elemento.vehiculo.equipoIn2.marca);
                        //bdEquipo.grabarElemento("modelo", elemento.vehiculo.equipo2.modelo);
                    }
                }
                BDRegistroVehiculo objBDReg = new BDRegistroVehiculo(cn);
                if (!elemento.persona.empresa.Equals(""))
                    objBDReg.grabarElemento("empresa", elemento.persona.empresa);
                
                rpta = objBDReg.grabar(elemento, usuario.idLogin);
                elemento.vehiculo.ultId = rpta;
                BDVehiculo bdVehiculo = new BDVehiculo(cn);
                bdVehiculo.grabar(elemento.vehiculo);


            }
            return rpta;
        }
        public int grabInventario(RegistroVehiculo elemento, Usuario usuario)
        {
            int rpta = 0;
            using (OleDbConnection cn = getCn())
            {
                BDPersona bdPersona = new BDPersona(cn);
                bdPersona.grabar(elemento.persona, 0);
                if (elemento.persona.numMovil.Trim() != "")
                {
                    bdPersona.grabaMovil(elemento.persona.numDoc, elemento.persona.numMovil);
                }
                if (!elemento.vehiculo.equipoIn1.numSerie.Equals(""))
                {
                    if (!elemento.vehiculo.equipoIn1.numSerie.Equals("NOREG"))
                    {
                        BDEquipo bdEquipo = new BDEquipo(cn);
                        bdEquipo.grabar(elemento.vehiculo.equipoIn1, 0, "I");
                        bdEquipo.grabarElemento("marca", elemento.vehiculo.equipoIn1.marca);
                    }
                }
                if (!elemento.vehiculo.equipoIn2.numSerie.Equals(""))
                {
                    if (!elemento.vehiculo.equipoIn2.numSerie.Equals("NOREG"))
                    {
                        BDEquipo bdEquipo = new BDEquipo(cn);
                        bdEquipo.grabar(elemento.vehiculo.equipoIn2, 0, "I");
                        bdEquipo.grabarElemento("marca", elemento.vehiculo.equipoIn2.marca);
                    }
                }
                BDRegistroVehiculo objBDReg = new BDRegistroVehiculo(cn);
                if (!elemento.persona.empresa.Equals(""))
                    objBDReg.grabarElemento("empresa", elemento.persona.empresa);

                rpta = objBDReg.grabarInventario(elemento, usuario.idLogin);
                elemento.vehiculo.ultId = rpta;
                BDVehiculo bdVehiculo = new BDVehiculo(cn);
                bdVehiculo.grabar(elemento.vehiculo);


            }
            return rpta;
        }
        public RegistroVehiculo get(int id)
        {
            using (OleDbConnection cn = getCn())
            {
                return new BDRegistroVehiculo(cn).get(id);
            }
        }
        //public void ingresoXX(int id, int idLogin, String placa, int kilometraje)
        //{
        //    using (OleDbConnection cn = getCn())
        //    {
        //        new BDRegistroVehiculo(cn).ingreso(id, idLogin,kilometraje);
        //        new BDVehiculo(cn).ingreso(placa, kilometraje);
        //    }
        //}
        public void ingresoCorporativo(int idLogin, RegistroVehiculo elemento)
        {
            using (OleDbConnection cn = getCn())
            {
                BDPersona bdPersona = new BDPersona(cn);
                bdPersona.grabar(elemento.persona, 0);
                if (!elemento.persona.empresa.Equals(""))
                    bdPersona.grabarElemento("empresa", elemento.persona.empresa);

                if (!elemento.vehiculo.equipoIn1.numSerie.Equals(""))
                {
                    if (!elemento.vehiculo.equipoIn1.numSerie.Equals("NOREG"))
                    {
                        BDEquipo bdEquipo = new BDEquipo(cn);
                        bdEquipo.grabar(elemento.vehiculo.equipoIn1, 0, "I");
                        bdEquipo.grabarElemento("marca", elemento.vehiculo.equipoIn1.marca);
                    }
                }
                if (!elemento.vehiculo.equipoIn2.numSerie.Equals(""))
                {
                    if (!elemento.vehiculo.equipoIn2.numSerie.Equals("NOREG"))
                    {
                        BDEquipo bdEquipo = new BDEquipo(cn);
                        bdEquipo.grabar(elemento.vehiculo.equipoIn2, 0, "I");
                        bdEquipo.grabarElemento("marca", elemento.vehiculo.equipoIn2.marca);
                    }
                }
                BDRegistroVehiculo objBDReg = new BDRegistroVehiculo(cn);
                objBDReg.ingresoCorporativo(idLogin, elemento);
                new BDVehiculo(cn).ingreso(elemento.vehiculo.placa , elemento.kilometrajeIngreso);
            }
        }
        public void salidaParticular(int id, int idLogin, string codigoVehiculo, Equipo equipo1, Equipo equipo2, string observOut)
        {
            using (OleDbConnection cn = getCn())
            {
                if (!equipo1.numSerie.Equals(""))
                {
                    if (!equipo1.numSerie.Equals("NOREG"))
                    {
                        BDEquipo bdEquipo = new BDEquipo(cn);
                        bdEquipo.grabar(equipo1, 0, "S");
                        bdEquipo.grabarElemento("marca", equipo1.marca);
                        bdEquipo.grabarElemento("modelo", equipo1.modelo);
                    }
                }
                if (!equipo2.numSerie.Equals(""))
                {
                    if (!equipo2.numSerie.Equals("NOREG"))
                    {
                        BDEquipo bdEquipo = new BDEquipo(cn);
                        bdEquipo.grabar(equipo2, 0, "S");
                        bdEquipo.grabarElemento("marca", equipo2.marca);
                        bdEquipo.grabarElemento("modelo", equipo2.modelo);
                    }
                }
                new BDRegistroVehiculo(cn).salidaParticular(id, idLogin,equipo1, equipo2, observOut);
                new BDVehiculo(cn).salidaParticular(codigoVehiculo);
            }
        }
        public List<RegistroVehiculo> getByFec(DateTime fecha, int idLocal, bool propio)
        {
            using (OleDbConnection cn = getCn())
            {
                return new BDRegistroVehiculo(cn).getByFec(fecha, idLocal,propio);
            }
        }
        public ArrayList reportePropios()
        {
            using (OleDbConnection cn = getCn())
            {
                return new BDRegistroVehiculo(cn).reportePropios();
            }
        }
        public ArrayList reporteNoPropios()
        {
            using (OleDbConnection cn = getCn())
            {
                return new BDRegistroVehiculo(cn).reporteNoPropios();
            }
        }
        public int getNoPropiosSinSalir()
        {
            using (OleDbConnection cn = getCn())
            {
                return new BDRegistroVehiculo(cn).getNoPropiosSinSalir();
            }
        }
    }

}
